package com.yujiahao.bigdata.rdd.insterance

import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}

/**
 * 创建RDD的方式：1）通过内存集合创建，有两种方法
 */
object Spark01_RDD_Instance_Memory {
  def main(args: Array[String]): Unit = {
    //TODO 1、构建环境--获得连接
    val conf: SparkConf = new SparkConf().setAppName("WordCount").setMaster("local")
    val sc: SparkContext = new SparkContext(conf)

  // TODO 3、业务逻辑
    // 2、构建数据模型，Spark可以通过环境对象构建数据模型。根据数据的来源会有不用的构建方式和不同的数据模型
    // TODO 1)内存（集合）
    //TODO 第一种方法：这个方法（表示并行，但是不好记忆，所以Spark提供了另外一个方法）需要传递一个参数,参数类型为：seq集合
    val seq: Seq[Int] = Seq(1, 2, 3, 4)
    val rdd: RDD[Int] = sc.parallelize(seq)
    //TODO 第二种方法:makeRDD的底层就是调用parallelize,使用时，推荐使用第二种，
    // makeRDD参数也是需要传递Sqe集合，但是seq集合的子集合都可以用，只要个seq集合有关系就行
    //makeRDD:第一个参数表示数据集（数据来源）；第二个参数表示数据切片（分区）的数量，参数存在默认值
    val list: List[Int] = List(1, 2, 3, 4)
    val rdd1: RDD[Int] = sc.makeRDD(list)


    //TODO 2、释放资源--关闭连接
    sc.stop()

  }

}
